<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>严格模式下的this指向</title>
</head>
<body>
  
</body>
<script>
// 1、严格模式下，独立调用的函数内部的this指向了undefined
function fn(){
  'use strict'
  console.log(this);
}
fn();

// 2、严格模式下，函数apply()和call()内部的this始终是他们的第一个参数
var color = 'red';
function showColor(){
  'use strict'
  console.log(this);  //null
  console.log(this.color);  //报错
}
showColor.call(null);


// this 总结
/* 
  总结：
    1、默认绑定
    2、隐式绑定
    3、显示绑定
    4、new绑定
    分别对应函数的四种调用：
    -独立调用
    -方法调用
    - 间接调用
      call()、apply()、bind()
    -构造函数调用

    隐式丢失：
    1、函数别名
    2、函数当作参数传递
    3、内置函数
    4、间接调用

*/







</script>
</html>